package com.atguigu.gmall.realtime.utils;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * Author: Felix
 * Date: 2022/4/11
 * Desc: 日期转换的工具类
 * 使用SimpleDateFormat对日期进行转换是线程不安全的
 * 在封装日期工具类的时候，应该使用线程安全的类型
 * 建议使用JDK1.8之后的日期类型
 * DateTimeFormatter--->SimpleDateFormat
 * LocalDateTime   ---->Date
 * Instant         ---->Calendar
 */
public class DateTimeUtil {

    private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    //将日期对象转换为字符串日期
    public static String toYMDHms(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        return dtf.format(localDateTime);
    }

    //将字符串日期转换为时间毫秒数
    public static Long toTs(String dateStr) {
        LocalDateTime localDateTime = LocalDateTime.parse(dateStr,dtf);
        Long ts = localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
        return ts;
    }
}
